package pruebas.testDesplazadores;

import org.junit.*;
import static org.junit.Assert.*;
import modelo.desplazadores.DesplazadorAlgo42;
import modelo.util.Vector;

public class TestDesplazadorAlgo42 {
	
	private Vector pos = new Vector(10,10);
	private Vector arriba = new Vector (0,1);
	private Vector derecha = new Vector (1,0);
	private Vector abajo = new Vector (0,-1);
	private Vector izquierda = new Vector (-1,0);
	private Vector diagonalArribaDer = new Vector (1,1);
	private float vel = 1;
	private DesplazadorAlgo42 desp;
	
	@Before
	public void setUp(){
		desp = new DesplazadorAlgo42(pos, arriba, vel);
	}
	
	@Test
	public void testDesplazarAlgo42(){
		assertEquals("Posicion inicial incorrecta",desp.getPosicion(), pos);
		
		pos = pos.sumar(arriba);
		desp.setDirProxMov(arriba);
		desp.mover();
		assertEquals("Movimiento hacia arriba incorrecto",desp.getPosicion(), pos);
		
		pos = pos.sumar(derecha);
		desp.setDirProxMov(derecha);
		desp.mover();
		assertEquals("Movimiento hacia la derecha incorrecto",desp.getPosicion(), pos);
		
		pos = pos.sumar(abajo);
		desp.setDirProxMov(abajo);
		desp.mover();
		assertEquals("Movimiento hacia abajo incorrecto",desp.getPosicion(), pos);
		
		pos = pos.sumar(izquierda);
		desp.setDirProxMov(izquierda);
		desp.mover();
		assertEquals("Movimiento hacia la izquierda incorrecto",desp.getPosicion(), pos);

		pos = pos.sumar(diagonalArribaDer.versor());
		desp.setDirProxMov(diagonalArribaDer);
		desp.mover();
		assertEquals("Movimiento hacia la diagonal superior derecha incorrecto",desp.getPosicion(), pos);
	}
	

}
